\input texinfo    @c -*- texinfo -*-
@c %**start of header
@setfilename readme.info
@settitle
@documentencoding UTF-8
@documentlanguage en
@c %**end of header

@finalout
@titlepage
@title
@author Yang Xiaolong
@end titlepage

@contents

@ifnottex
@node Top
@top
@end ifnottex

@menu
* Introduction::
* Manuals::
* Tutorials::
* Libraries::
* Programming paradigm::
* Tools::
* Blogs::
* Other: Other (3).
* Other lists of Guile software::
* Videos / Talks / Presentations::

@detailmenu
--- The Detailed Node Listing ---

Libraries

* Async::
* Browser::
* Chat clients::
* Compression::
* Configuration::
* Databases::
* Data structures::
* E-Mail::
* Event loop::
* FFI - Foreign Function Interface::
* File formats::
* File system::
* Game development::
* Games::
* Graphics::
* GUI development::
* Language::
* Logging::
* Machine Learning::
* Message Queues::
* Network programming::
* Parsing::
* Plotting::
* Protocols::
* Regular expressions::
* REPL::
* RPC::
* Scientific computing and mathematics::
* TUI development::
* Unit Testing::
* Version control systems::
* Web Development::
* Window manager::
* Working with code::
* Other::

Chat clients

* IRC::

Data structures

* Purely functional data structures (PDFS)::
* RDF::
* Lenses::
* Other: Other (1).

File formats

* JSON::
* CSV::
* XML::
* Markdown::
* Texinfo::
* JPEG::
* ICS::
* torrent::
* Other: Other (2).

Graphics

* Image processing::

Parsing

* Parser Combinators::
* Parser Generator::

Scientific computing and mathematics

* Interaction with the Jupyter ecosystem::

Web Development

* Web frameworks::
* Tooling / Additional libraries::
* Static website generators::
* Template engine::
* Interaction with services::
* Web application examples::

Programming paradigm

* "Object-oriented programming"::
* Relational programming::
* Functional programming::

"Object-oriented programming"

* Prototype based::

Tools

* Project management::

Project management

* Package managers::

@end detailmenu
@end menu

@node Introduction
@chapter Introduction

In software development circles there is a culture of creating so called "awesome lists". Those lists contain links to all kinds of resources for a topic, which can be as broadly defined as "computer science", "software development", "software engineering" or as specific as a single programming language or an area of application of programming languages such as "web development", "machine learning". Probably such lists exist for many other things than programming as well. Their character is mostly informal, which makes them easily extendable. Here is what not to expect from such a list:

@itemize
@item
comprehensiveness or completeness
@item
being finished
@item
always containing the most up to date links to relevant projects
@item
containing the links to the best options for all purpose or goal
@end itemize

While those things might be desirable, the list is a community effort. It is up to the author and community to share their knowledge. No one knows everything there is to know and new projects are initiated frequently.

The following list is such an "awesome list" for the programming language GNU Guile. Its purpose is to make it easy for people to find tutorials, resources or any kind of knowledge about GNU Guile.

Anyone, who knows something, that should be added to the list, is welcome to suggest edits or make pull requests.

@node Manuals
@chapter Manuals

@itemize
@item
There is a huge reference manual for GNU Guile on the GNU website: @uref{https://www.gnu.org/software/guile/manual/}.
@end itemize

@node Tutorials
@chapter Tutorials

@itemize
@item
"Learn Scheme in 15 minutes": @uref{https://web-artanis.com/scheme.html}
@item
guile-tutorial: @uref{https://notabug.org/cwebber/guile-tutorial}
@end itemize

@node Libraries
@chapter Libraries

@itemize
@item
GUIX package search
@itemize
@item
website: @uref{https://hpc.guix.info/browse}
@item
Search for example for @code{^guile-} to find many Guile libraries and projects.
@end itemize
@end itemize

@menu
* Async::
* Browser::
* Chat clients::
* Compression::
* Configuration::
* Databases::
* Data structures::
* E-Mail::
* Event loop::
* FFI - Foreign Function Interface::
* File formats::
* File system::
* Game development::
* Games::
* Graphics::
* GUI development::
* Language::
* Logging::
* Machine Learning::
* Message Queues::
* Network programming::
* Parsing::
* Plotting::
* Protocols::
* Regular expressions::
* REPL::
* RPC::
* Scientific computing and mathematics::
* TUI development::
* Unit Testing::
* Version control systems::
* Web Development::
* Window manager::
* Working with code::
* Other::
@end menu

@node Async
@section Async

@itemize
@item
8sync
@itemize
@item
git repository at Savannah: @uref{https://savannah.gnu.org/projects/8sync}
@item
manual / GNU software manual: @uref{https://www.gnu.org/software/8sync/manual/html_node/index.html#Top}
@item
website / GNU software page: @uref{https://www.gnu.org/software/8sync/}
@item
tutorial: @uref{https://www.gnu.org/software/8sync/manual/html_node/Tutorial.html#Tutorial}
@end itemize
@end itemize

@node Browser
@section Browser

@itemize
@item
Nomad
@itemize
@item
git repository at non-GNU Savannah: @uref{https://savannah.nongnu.org/projects/nomad/}
@item
website: @uref{https://www.nongnu.org/nomad/}
@end itemize
@end itemize

@node Chat clients
@section Chat clients

@menu
* IRC::
@end menu

@node IRC
@subsection IRC

@itemize
@item
@code{guile-irc}
@itemize
@item
git repository at GitHub: @uref{https://github.com/fbs/guile-irc}
@end itemize
@end itemize

@node Compression
@section Compression

@itemize
@item
@code{guile-zlib}
@itemize
@item
git repository at GitHub: @uref{https://github.com/davexunit/guile-zlib}
@end itemize
@end itemize

@node Configuration
@section Configuration

@itemize
@item
@code{guile-config}
@itemize
@item
git repository at GitLab: @uref{https://gitlab.com/a-sassmannshausen/guile-config}
@end itemize
@end itemize

@node Databases
@section Databases

@itemize
@item
Generic
@itemize
@item
@code{guile-dbi}
@itemize
@item
git repository at GitHub: @uref{https://github.com/opencog/guile-dbi}
@item
documentation: @uref{https://htmlpreview.github.io/?https://github.com/opencog/guile-dbi/blob/master/website/guile-dbi.html}
@item
offers MySQL, Postgresql and SQLite3 interfaces
@end itemize
@end itemize

@item
@code{guile-redis}
@itemize
@item
git repository at GitHub: @uref{https://github.com/aconchillo/guile-redis}
@end itemize

@item
@code{guile-sqlite3}
@itemize
@item
git repository at notabug.org: @uref{https://notabug.org/guile-sqlite3/guile-sqlite3.git}
@item
documentation at: ???
@end itemize

@item
Postgres
@itemize
@item
@code{guile-squee}
@itemize
@item
git repository at notabug.org: @uref{https://notabug.org/cwebber/guile-squee}
@item
documentation at: ???
@end itemize
@end itemize

@item
WiredTiger (@uref{http://www.wiredtiger.com/}
@itemize
@item
@code{guile-wiredtiger}
@itemize
@item
blog post: @uref{https://hyper.dev/blog/getting-started-with-guile-wiredtiger.html}
@item
git repository at: ??? (framagit requires login?)
@end itemize
@end itemize

@item
@code{guile-sparql}: @uref{https://github.com/roelj/guile-sparql}

@item
@code{sparqling-genomics}: @uref{https://github.com/UMCUGenetics/sparqling-genomics}
@end itemize

@node Data structures
@section Data structures

@menu
* Purely functional data structures (PDFS)::
* RDF::
* Lenses::
* Other: Other (1).
@end menu

@node Purely functional data structures (PDFS)
@subsection Purely functional data structures (PDFS)

@itemize
@item
@code{pdfs}
@itemize
@item
git repository at GitHub: @uref{https://github.com/ijp/pfds}
@item
documentation: ???
@end itemize

@item
@code{fectors}
@itemize
@item
git repository at GitHub: @uref{https://github.com/ijp/fectors}
@end itemize
@end itemize

@node RDF
@subsection RDF

@itemize
@item
@code{guile-rdf}
@itemize
@item
git repository at framagit: @uref{https://framagit.org/tyreunom/guile-rdf}
@end itemize
@end itemize

@node Lenses
@subsection Lenses

@itemize
@item
@code{guile-lens}
@itemize
@item
git repository at GitLab: @uref{https://gitlab.com/a-sassmannshausen/guile-lens}
@end itemize
@end itemize

@node Other (1)
@subsection Other

@itemize
@item
@code{copernic}
@itemize
@item
git repository at GitHub: @uref{https://github.com/amirouche/copernic}
@end itemize
@end itemize

@node E-Mail
@section E-Mail

@itemize
@item
GNU Mailutils ??? (@uref{https://mailutils.org/})

@item
@code{guile-email}: @uref{https://guile-email.systemreboot.net/}
@end itemize

@node Event loop
@section Event loop

@itemize
@item
@code{guile-a-sync}
@itemize
@item
git repository at GitHub: @uref{https://github.com/ChrisVine/guile-a-sync}
@item
documentation: ?
@end itemize
@end itemize

@node FFI - Foreign Function Interface
@section FFI - Foreign Function Interface

@itemize
@item
@code{ffi-helper} from NYACC
@itemize
@item
documentation: @uref{https://www.nongnu.org/nyacc/ffi-help.html}
@end itemize
@end itemize

@node File formats
@section File formats

@menu
* JSON::
* CSV::
* XML::
* Markdown::
* Texinfo::
* JPEG::
* ICS::
* torrent::
* Other: Other (2).
@end menu

@node JSON
@subsection JSON

@itemize
@item
JSON
@itemize
@item
@code{guile-json}
@itemize
@item
on GitHub: @uref{https://github.com/aconchillo/guile-json}
@item
on savannah: @uref{http://savannah.nongnu.org/projects/guile-json/}
@end itemize
@end itemize
@end itemize

@node CSV
@subsection CSV

@itemize
@item
@code{guile-csv}
@itemize
@item
git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/guile-csv}
@end itemize

@item
@code{guile-dsv}
@itemize
@item
This is more general, but can work with CSV as well.
@item
git repository at GitHub: @uref{https://github.com/artyom-poptsov/guile-dsv}
@end itemize
@end itemize

@node XML
@subsection XML

@itemize
@item
Guile's standard library SXML implementation
@itemize
@item
GNU software manual: @uref{https://www.gnu.org/software/guile/manual/html_node/SXML.html}
@item
Basically your templates become functions or macros.
@item
The structure of your document is kept as Scheme data structures.
@itemize
@item
This avoids having parse the document as a long string into an internal data structure to perform semantic transformations.
@item
It enables pattern matching without resorting to things like regular expressions and similar shenanigans.
@end itemize
@end itemize
@end itemize

@node Markdown
@subsection Markdown

@itemize
@item
@code{guile-commonmark}
@itemize
@item
git repository at GitHub: @uref{https://github.com/OrangeShark/guile-commonmark}
@item
documentation: ???
@end itemize
@end itemize

@node Texinfo
@subsection Texinfo

@itemize
@item
Guile standard library texinfo functionality
@itemize
@item
GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/texinfo.html}
@end itemize
@end itemize

@node JPEG
@subsection JPEG

@itemize
@item
@code{guile-jpeg}: a library for parsing JPEG files
@itemize
@item
git repository at GitHub: @uref{https://github.com/guildhall/guile-jpeg}
@end itemize
@end itemize

@strong{*}

@node ICS
@subsection ICS

@itemize
@item
@code{guile-ics}
@itemize
@item
git repository at GitHub: @uref{https://github.com/artyom-poptsov/guile-ics}
@end itemize
@end itemize

@node torrent
@subsection torrent

@itemize
@item
@code{torrent}
@itemize
@item
git repository at GitHub: @uref{https://github.com/o-nly/torrent}
@item
documentation at: ???
@end itemize
@end itemize

@node Other (2)
@subsection Other

@itemize
@item
If the input is not input from users and is trustworthy, one might be able to leverage read/write of s-expressions instead of using other formats.
@end itemize

@node File system
@section File system

@itemize
@item
@code{sdupes}, duplicate file detection
@itemize
@item
git repository at GitHub: @uref{https://github.com/sph-mn/sdupes}
@end itemize
@end itemize

@node Game development
@section Game development

@itemize
@item
Chickadee
@itemize
@item
describes itself as "game development toolkit"
@item
OpenGL based
@item
website: @uref{https://dthompson.us/projects/chickadee.html}
@item
manual: @uref{https://dthompson.us/manuals/chickadee/index.html}
@end itemize
@end itemize

@node Games
@section Games

@itemize
@item
StayAlive
@itemize
@item
git repo: @uref{https://github.com/mwitmer/StayAlive}
@end itemize
@end itemize

@node Graphics
@section Graphics

@itemize
@item
@code{guile-sdl}
@itemize
@item
GNU software page: @uref{https://www.gnu.org/software/guile-sdl/}
@item
gnuvola page of examples: @uref{http://www.gnuvola.org/software/guile-sdl-demos/}
@item
gnuvola software page: @uref{http://www.gnuvola.org/software/guile-sdl-demos/}
@end itemize

@item
@code{guile-sdl2}
@itemize
@item
project website: @uref{https://dthompson.us/projects/guile-sdl2.html}
@end itemize

@item
@code{guile-opengl}
@itemize
@item
GNU software page: @uref{https://www.gnu.org/software/guile-opengl/}
@item
GNU software manual page: @uref{https://www.gnu.org/software/guile-opengl/manual/guile-opengl.html}
@item
git repository at Savannah: @uref{http://savannah.gnu.org/projects/guile-opengl}
@end itemize

@item
@code{guile-cairo}
@itemize
@item
git repository at Savannah: @uref{http://savannah.nongnu.org/projects/guile-cairo}
@end itemize

@item
@code{guile-jpeg}: a library for parsing JPEG files
@itemize
@item
git repository at GitHub: @uref{https://github.com/guildhall/guile-jpeg}
@end itemize
@end itemize

@menu
* Image processing::
@end menu

@node Image processing
@subsection Image processing

@itemize
@item
@code{guile-cv}
@itemize
@item
GNU software page: @uref{https://www.gnu.org/software/guile-cv/}
@item
git repository at Savannah: @uref{http://git.savannah.gnu.org/cgit/guile-cv.git}
@end itemize
@end itemize

@node GUI development
@section GUI development

@itemize
@item
@code{guile-gi}
@itemize
@item
git repository at GitHub: @uref{https://github.com/spk121/guile-gi}
@item
documentation at: @uref{https://spk121.github.io/guile-gi/}
@end itemize

@item
@code{guile-gnome}
@itemize
@item
GNU software page: @uref{https://www.gnu.org/software/guile-gnome/}
@item
git repository at Savannah: @uref{http://git.savannah.gnu.org/cgit/guile-gnome.git}
@end itemize

@item
@code{guile-gtk}
@itemize
@item
website: @uref{https://www.gnu.org/software/guile-gtk/}
@item
CVS repository at non-GNU Savannah: @uref{http://savannah.nongnu.org/projects/guile-gtk/}
@end itemize

@item
@code{g-golf}: @uref{https://www.gnu.org/software/g-golf/}
@end itemize

@node Language
@section Language

@itemize
@item
@code{guile-aspell}
@itemize
@item
git repository at GitHub: @uref{https://github.com/spk121/guile-aspell}
@item
website: @uref{http://lonelycactus.com/guile-aspell.html}
@end itemize
@end itemize

@node Logging
@section Logging

@itemize
@item
@code{guile-logging}
@itemize
@item
git repository at GitHub: @uref{https://github.com/shanecelis/guile-logging}
@end itemize
@end itemize

TODO: check e-mails from the guile user list for more info

@node Machine Learning
@section Machine Learning

@itemize
@item
decision tree
@itemize
@item
@code{guile-ml}
@itemize
@item
repository at notabug.org: @uref{https://notabug.org/ZelphirKaltstahl/guile-ml}
@end itemize
@end itemize
@end itemize

@node Message Queues
@section Message Queues

@itemize
@item
Zero MQ
@itemize
@item
@code{guile-zmq}
@itemize
@item
git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/guile-zmq}
@end itemize
@item
@code{guile-simple-zmq}
@itemize
@item
git repository at GitHub: @uref{https://github.com/jerry40/guile-simple-zmq}
@end itemize
@end itemize
@end itemize

@node Network programming
@section Network programming

@itemize
@item
Guile's standard library networking module
@itemize
@item
GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/Networking.html}
@end itemize

@item
@code{guile-curl}
@itemize
@item
git repository at GitHub: @uref{https://github.com/spk121/guile-curl}
@end itemize

@item
@code{guile-ssh}
@itemize
@item
git repository at GitHub: @uref{https://github.com/artyom-poptsov/guile-ssh}
@end itemize

@item
GNU Serveez
@itemize
@item
GNU software page: @uref{https://www.gnu.org/software/serveez/}
@item
manual: @uref{https://www.gnu.org/software/serveez/manual/}
@item
git repository at Savannah: @uref{http://savannah.gnu.org/projects/serveez/}
@end itemize

@item
@code{serveez-mg}
@itemize
@item
git repository at GitHub @uref{https://github.com/spk121/serveez-mg}
@item
based on GNU Serveez
@end itemize
@end itemize

@node Parsing
@section Parsing

@menu
* Parser Combinators::
* Parser Generator::
@end menu

@node Parser Combinators
@subsection Parser Combinators

@itemize
@item
@code{stis-parser}
@itemize
@item
git repository at GitLab: @uref{https://gitlab.com/tampe/stis-parser}
@end itemize
@end itemize

@node Parser Generator
@subsection Parser Generator

@itemize
@item
@code{nyacc}: Not Yet Another Compiler Compiler
@itemize
@item
git repository at Savannah: @uref{https://savannah.nongnu.org/projects/nyacc}
@item
documentation: @uref{https://www.nongnu.org/nyacc/nyacc-ug.html}
@end itemize
@end itemize

@node Plotting
@section Plotting

@itemize
@item
@code{guile-plotutils}
@itemize
@item
git repository at GitHub: @uref{https://github.com/spk121/guile-plotutils}
@item
website: @uref{https://www.gnu.org/software/plotutils/plotutils.html}
@end itemize
@end itemize

@node Protocols
@section Protocols

@itemize
@item
X protocol
@itemize
@item
@code{guile-xcb}
@itemize
@item
git repo: @uref{https://github.com/mwitmer/guile-xcb}
@end itemize
@end itemize
@end itemize

@node Regular expressions
@section Regular expressions

@itemize
@item
IrRegular Expressions (Scheme, R[4567]RS)
@itemize
@item
website: @uref{http://synthcode.com/scheme/irregex}
@end itemize
@end itemize

@node REPL
@section REPL

@itemize
@item
@code{guile-colorized}
@itemize
@item
git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/guile-colorized}
@end itemize
@end itemize

@node RPC
@section RPC

@itemize
@item
@code{guile-xmlrpc}: @uref{https://github.com/aconchillo/guile-xmlrpc}
@end itemize

@node Scientific computing and mathematics
@section Scientific computing and mathematics

@itemize
@item
GNU Scientific Library (GSL)
@itemize
@item
GNU software page @uref{https://www.gnu.org/software/gsl/}
@item
git repository at Savannah: @uref{http://savannah.gnu.org/projects/gsl/}
@item
wikipedia page: @uref{https://en.wikipedia.org/wiki/GNU_Scientific_Library}
@item
Guile bindings: @uref{http://community.schemewiki.org/?gee-guile-gsl}
@end itemize

@item
Matrix multiplication
@itemize
@item
@code{guile-ffi-cblas}
@itemize
@item
git repository at GitHub: @uref{https://github.com/lloda/guile-ffi-cblas}
@end itemize
@end itemize

@item
Symbolic mathematics
@itemize
@item
@code{guile-scmutils}
@itemize
@item
website: @uref{https://www.cs.rochester.edu/~gildea/guile-scmutils/}
@end itemize
@end itemize

@item
Guile implementation of symbolic mathematics shown in SICP
@itemize
@item
Does this exist?
@end itemize
@end itemize

@menu
* Interaction with the Jupyter ecosystem::
@end menu

@node Interaction with the Jupyter ecosystem
@subsection Interaction with the Jupyter ecosystem

@itemize
@item
@code{guix-kernel}
@itemize
@item
git repository at gitlab.inria.fr: @uref{https://gitlab.inria.fr/guix-hpc/guix-kernel}
@item
blog post: @uref{https://hpc.guix.info/blog/2019/10/towards-reproducible-jupyter-notebooks/}
@end itemize

@item
@code{guile-kernel}
@itemize
@item
git repository at GitHub: @uref{https://github.com/jerry40/guile-kernel}
@end itemize
@end itemize

@node TUI development
@section TUI development

@itemize
@item
@code{guile-ncurses}
@itemize
@item
GNU software page: @uref{https://www.gnu.org/software/guile-ncurses/}
@item
git repository at GitHub: @uref{https://github.com/guildhall/guile-ncurses}
@end itemize
@end itemize

@node Unit Testing
@section Unit Testing

@itemize
@item
SRFI-64 (@uref{https://srfi.schemers.org/srfi-64/srfi-64.html})
@itemize
@item
GNU software Guile manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/SRFI_002d64.html}
@end itemize

@item
@code{srfi-64-driver}
@itemize
@item
git repository at: ???
@item
website: @uref{https://ngyro.com/software/srfi-64-driver.html}
@end itemize
@end itemize

@node Version control systems
@section Version control systems

@itemize
@item
@code{guile-git}
@itemize
@item
git repository at GitLab: @uref{https://gitlab.com/guile-git/guile-git}
@end itemize

@item
@code{guile-semver}
@itemize
@item
git repository at ngyro: @uref{https://git.ngyro.com/guile-semver}
@item
website at: @uref{https://ngyro.com/software/guile-semver.html}
@end itemize
@end itemize

@node Web Development
@section Web Development

@menu
* Web frameworks::
* Tooling / Additional libraries::
* Static website generators::
* Template engine::
* Interaction with services::
* Web application examples::
@end menu

@node Web frameworks
@subsection Web frameworks

@itemize
@item
Guile's standard library's web module for dealing with web stuff:
@itemize
@item
GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/Web.html}
@end itemize

@item
Guile's standard library's web server:
@itemize
@item
GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/Web-Server.html}
@item
blog post about the performance of Guile's web server: @uref{http://wingolog.org/archives/2012/03/08/an-in-depth-look-at-the-performance-of-guiles-web-server}
@item
documentation as generic interface for web server implementations: @uref{https://www.gnu.org/software/guile/manual/html_node/Web-Server.html}
@item
examples for usage for creating a web app: @uref{https://www.gnu.org/software/guile/manual/html_node/Web-Examples.html#Web-Examples}
@end itemize

@item
GNU Artanis web application frameweork
@itemize
@item
GNU software page: @uref{https://www.gnu.org/software/artanis/}
@item
git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/artanis}
@item
official website of the GNU Artanis project: @uref{https://web-artanis.com/}
@item
blog post about GNU Artanis: @uref{https://dev.to/heroku/an-ode-to-gnu-artanis-2gn3}
@item
manual:
@itemize
@item
@uref{https://www.gnu.org/software/artanis/manual/manual.html}
@item
@uref{https://www.gnu.org/software/artanis/manual/html_node/}
@end itemize
@item
blog post about using GNU Artanis in a docker container: @uref{https://nalaginrut.com/archives/2019/09/18/install%20gnu%20artanis%20with%20docker}
@end itemize

@item
SPH web app
@itemize
@item
git repository at GitHub: @uref{https://github.com/sph-mn/sph-web-app}
@end itemize

@item
tekuti
@itemize
@item
The git repository unfortunately seems to be dead, because it was hosted at gitorious, a now disfunct git host. Where can the code be found?
@item
blog post about tekuti: @uref{https://wingolog.org/projects/tekuti/}
@end itemize
@end itemize

@node Tooling / Additional libraries
@subsection Tooling / Additional libraries

@itemize
@item
JSON
@itemize
@item
@code{guile-json}
@itemize
@item
on GitHub: @uref{https://github.com/aconchillo/guile-json}
@item
on savannah: @uref{http://savannah.nongnu.org/projects/guile-json/}
@end itemize
@end itemize

@item
@code{guile-www}
@itemize
@item
git repository at savannah non-gnu: @uref{http://savannah.nongnu.org/projects/guile-www/}
@end itemize

@item
@code{guile-webutils}
@itemize
@item
git repository at notabug.org: @uref{https://notabug.org/cwebber/guile-webutils}
@end itemize
@end itemize

@enumerate
@item
Authorization and authentication


@itemize
@item
@code{guile-oauth}
@itemize
@item
git repository at GitHub: @uref{https://github.com/aconchillo/guile-oauth}
@end itemize

@item
@code{guile-jwt}
@itemize
@item
git repository on GitHub: @uref{https://github.com/aconchillo/guile-jwt}
@end itemize
@end itemize
@end enumerate

@node Static website generators
@subsection Static website generators

@itemize
@item
@code{guile-haunt}
@itemize
@item
git repository at GitHub: @uref{https://github.com/guildhall/guile-haunt}
@end itemize

@item
SPH static website generator
@itemize
@item
git repository at GitHub: @uref{https://github.com/sph-mn/sph-web-publish}
@end itemize
@end itemize

@node Template engine
@subsection Template engine

@itemize
@item
Guile's standard library SXML implementation
@itemize
@item
GNU software manual: @uref{https://www.gnu.org/software/guile/manual/html_node/SXML.html}
@item
Basically your templates become functions or macros.
@item
The structure of your document is kept as Scheme data structures.
@itemize
@item
This avoids having parse the document as a long string into an internal data structure to perform semantic transformations.
@item
It enables pattern matching without resorting to things like regular expressions and similar shenanigans.
@end itemize
@end itemize
@end itemize

@node Interaction with services
@subsection Interaction with services

@itemize
@item
@code{guile-mastodon}
@itemize
@item
git repository at framagit: @uref{https://framagit.org/prouby/guile-mastodon}
@item
documentation at: @uref{https://framagit.org/prouby/guile-mastodon/-/blob/master/doc/guile-mastodon.org}
@end itemize
@end itemize

@node Web application examples
@subsection Web application examples

@itemize
@item
@code{scheme-todomvc}:
@itemize
@item
git repo: @uref{https://github.com/amirouche/scheme-todomvc}
@item
demo: @uref{https://amirouche.github.io/scheme-todomvc/}
@end itemize
@end itemize

@node Window manager
@section Window manager

@itemize
@item
@code{guile-wm}
@itemize
@item
git repo: @uref{https://github.com/mwitmer/guile-wm}
@end itemize
@end itemize

@node Working with code
@section Working with code

@itemize
@item
@code{guile-syntax-highlight}
@itemize
@item
website: @uref{https://dthompson.us/projects/guile-syntax-highlight.html}
@item
repository: seems to be missing
@end itemize
@end itemize

@node Other
@section Other

@itemize
@item
@code{guile-lib}
@itemize
@item
git repository at non-GNU Savannah: @uref{http://git.savannah.nongnu.org/cgit/guile-lib.git}
@item
website at: @uref{https://www.nongnu.org/guile-lib/}
@end itemize

@item
SPH website:
@itemize
@item
It has some Guile library and project descriptions and links.
@item
@uref{http://sph.mn/}
@end itemize
@end itemize

@node Programming paradigm
@chapter Programming paradigm

@menu
* "Object-oriented programming"::
* Relational programming::
* Functional programming::
@end menu

@node "Object-oriented programming"
@section "Object-oriented programming"

@itemize
@item
GOOPS
@itemize
@item
GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/GOOPS.html}
@end itemize
@end itemize

@menu
* Prototype based::
@end menu

@node Prototype based
@subsection Prototype based

@itemize
@item
Shelf
@itemize
@item
git repo: @uref{https://github.com/mwitmer/Shelf}
@end itemize
@end itemize

@node Relational programming
@section Relational programming

@itemize
@item
@code{minikanren}
@itemize
@item
git repository at GitHub: @uref{https://github.com/ijp/minikanren}
@item
miniKanren uncourse by William Byrd: @uref{https://duckduckgo.com/?q=minikanren+uncourse&t=h_&iax=videos&ia=videos&iai=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DiCuVTGWNU3s}
@end itemize
@end itemize

@node Functional programming
@section Functional programming

@itemize
@item
Monad implementations
@itemize
@item
git repository at GitHub: @uref{https://github.com/ijp/monad}
@end itemize
@end itemize

@node Tools
@chapter Tools

@menu
* Project management::
@end menu

@node Project management
@section Project management

@itemize
@item
@code{guile-hall}
@itemize
@item
git repository at GitLab: @uref{https://gitlab.com/a-sassmannshausen/guile-hall}
@end itemize

@item
@code{homebrew-guile}: @uref{https://github.com/aconchillo/}
@end itemize

@menu
* Package managers::
@end menu

@node Package managers
@subsection Package managers

@itemize
@item
@code{guildhall}
@itemize
@item
git repository at GitHub: @uref{https://github.com/ijp/guildhall}
@end itemize
@end itemize

@node Blogs
@chapter Blogs

@itemize
@item
@uref{https://hyper.dev/}
@item
@end itemize

@node Other (3)
@chapter Other

@itemize
@item
SPH lib, collection of Guile libraries
@itemize
@item
website: @uref{http://sph.mn/computer/software/sph-lib.html}
@end itemize
@end itemize

@node Other lists of Guile software
@chapter Other lists of Guile software

@itemize
@item
official GNU Guile website library list: @uref{https://www.gnu.org/software/guile/libraries/}
@item
SPH list: @uref{http://sph.mn/foreign/guile-software.html}
@end itemize

@node Videos / Talks / Presentations
@chapter Videos / Talks / Presentations

This category is still empty. Help filling it with interesting GNU Guile related videos, talks or presentations!

@bye